java订阅按钮单击,无需内联实现
public void onCreate(Bundle savedInstanceState) {
...
btn_client_connect.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
// inline implementation goes here ...
}
}
我想将内联实现移动到单独的函数,保持onCreate函数简短易读:
private void OnBtnConnectClick(View v) { // implementation... }
现在,我需要使用如下方式订阅按钮单击:
btn_client_connect.setOnClickListener(this.OnBtnConnectClick);
但这并没有经过编译。我只有一个丑陋的解决方案:
btn_client_connect.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { OnBtnConnectClick(v); } });
有没有更好的办法
# 1 楼答案
方法在Java中不是对象,所以不能这样做
您可以创建一个私有的内部类(或者一个单独的类,由您决定):
然后呢
# 2 楼答案
如果用XML创建布局,那么可以使用
Button
的android:onClick
属性。您需要定义方法的名称:并在
Activity
中实现此方法:不需要额外的代码。希望这有帮助
# 3 楼答案
还有其他方法可以设置
Click Listeners
与之类似您只需键入xml
android:onClick="OnBtnConnectClick"
和
Keppil
建议的其他# 4 楼答案
有几种方法可以做到这一点:
然后这个方法看起来像:
或者另一种方法:
然后这个类看起来像:
# 5 楼答案
您可以在XML中定义单击按钮(或视图)时执行的
Method
阅读更多http://smartcloudblog.blogspot.com/2011/09/android-onclicklisteners-vs.html
# 6 楼答案